package com.lss.music;

import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.util.Log;

import com.google.gson.Gson;
import com.lss.music.activity.SplashActivity;

/**
 * 应用程序入口
 */
public class App extends Application {

    private static final String TAG = "App";
    private static App instance;

    private static Gson gson;

    public static Gson getGson() {
        if (gson == null) {
            synchronized (App.class) {
                if (gson == null) {
                    gson = new Gson();
                }
            }
        }
        return gson;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;

        // 1. 初始化依赖注入
        initDependencyInjection();

        // 2. 初始化全局组件
        initGlobalComponents();

        // 3. 设置全局异常处理器
        initExceptionHandler();

        Log.d(TAG, "Application created");
    }

    private void initDependencyInjection() {

    }

    private void initGlobalComponents() {
//        // 网络客户端（Retrofit示例）
//        Retrofit retrofit = new Retrofit.Builder()
//                .baseUrl("https://api.music-service.com/")
//                .addConverterFactory(GsonConverterFactory.create(getGson()))
//                .build();
//        apiService = retrofit.create(ApiService.class);
//
//        // 音乐播放器（ExoPlayer示例）
//        exoPlayer = new ExoPlayer.Builder(this).build();
//
//        // 数据库初始化
//        database = Room.databaseBuilder(this, AppDatabase.class, "music-db")
//                .fallbackToDestructiveMigration()
//                .build();
    }

    private void initExceptionHandler() {
        Thread.setDefaultUncaughtExceptionHandler((thread, ex) -> {
            Log.e(TAG, "Uncaught Exception: ", ex);
            // 崩溃日志上报（Firebase/友盟等）
//            Crashlytics.logException(ex);
            // 建议：触发崩溃后重启或显示友好提示
            restartApp();
        });
    }

    private void restartApp() {
        Intent intent = new Intent(this, SplashActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());
    }

    // 获取应用实例（单例）
    public static App getInstance() {
        return instance;
    }

    // 获取应用上下文（避免内存泄漏）
    public static Context getAppContext() {
        return instance.getApplicationContext();
    }

    // 获取依赖注入组件

    // 获取音乐播放器实例


    @Override
    public void onLowMemory() {
        super.onLowMemory();
        Log.w(TAG, "Low memory warning! Clearing caches...");
        // 清理缓存以释放内存
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // 处理配置变更（如屏幕旋转、语言切换等）
    }
}